type go/types.Chan
67 uses
go/types (current package)
builtins.go#L180: case *Slice, *Chan:
builtins.go#L198: case *Array, *Slice, *Chan:
builtins.go#L255: uch, _ := u.(*Chan)
builtins.go#L537: case *Slice, *Map, *Chan:
builtins.go#L554: case *Map, *Chan:
chan.go#L11: type Chan struct {
chan.go#L27: func NewChan(dir ChanDir, elem Type) *Chan {
chan.go#L28: return &Chan{dir: dir, elem: elem}
chan.go#L32: func (c *Chan) Dir() ChanDir { return c.dir }
chan.go#L35: func (c *Chan) Elem() Type { return c.elem }
chan.go#L37: func (c *Chan) Underlying() Type { return c }
chan.go#L38: func (c *Chan) String() string { return TypeString(c, nil) }
expr.go#L203: ch, _ := u.(*Chan)
expr.go#L217: return u.(*Chan).elem
expr.go#L470: case *Pointer, *Signature, *Slice, *Map, *Chan:
hash.go#L66: case *Chan:
hash.go#L249: case *Chan:
infer.go#L622: case *Chan:
infer.go#L775: case *Chan:
mono.go#L236: case *Chan:
operand.go#L269: case *Chan:
operand.go#L407: if Vc, ok := Vu.(*Chan); ok && Vc.dir == SendRecv {
operand.go#L408: if Tc, ok := Tu.(*Chan); ok && Identical(Vc.elem, Tc.elem) {
predicates.go#L176: case *Pointer, *Chan:
predicates.go#L215: case *Slice, *Pointer, *Signature, *Map, *Chan:
predicates.go#L462: case *Chan:
predicates.go#L465: if y, ok := y.(*Chan); ok {
range.go#L212: if ch, _ := u.(*Chan); ch != nil && ch.dir == SendOnly {
range.go#L238: case *Chan:
subst.go#L312: case *Chan:
subst.go#L315: return &Chan{dir: t.dir, elem: elem}
typestring.go#L260: case *Chan:
typestring.go#L267: if c, _ := t.elem.(*Chan); c != nil && c.dir == RecvOnly {
typexpr.go#L363: typ := new(Chan)
under.go#L99: if chu, _ := cu.(*Chan); chu != nil {
under.go#L100: if ch, _ := u.(*Chan); ch != nil {
unify.go#L438: if yc, _ := y.Underlying().(*Chan); yc != nil && yc.dir != SendRecv {
unify.go#L736: case *Chan:
unify.go#L740: if y, ok := y.(*Chan); ok {
go.pact.im/x/plumb/internal/emit
name.go#L87: case *types.Chan:
render.go#L95: case *types.Chan:
render.go#L125: case *types.Chan:
go.pact.im/x/plumb/internal/gotypes
cmp.go#L54: case *types.Chan:
cmp.go#L55: b := b.(*types.Chan)
cmp.go#L168: case *types.Chan:
subst.go#L49: case *types.Chan:
unify.go#L37: case *types.Chan:
unify.go#L38: c, ok := concrete.(*types.Chan)
unify.go#L166: case *types.Chan:
walk.go#L59: case *types.Chan:
walk.go#L140: case *types.Chan:
golang.org/x/exp/apidiff
compatibility.go#L25: case *types.Chan:
compatibility.go#L26: if new, ok := new.(*types.Chan); ok {
compatibility.go#L49: func (d *differ) checkCompatibleChan(otn *types.TypeName, old, new *types.Chan) {
correspondence.go#L54: case *types.Chan:
correspondence.go#L55: if new, ok := new.(*types.Chan); ok {
golang.org/x/tools/go/types/objectpath
objectpath.go#L472: case *types.Pointer, *types.Slice, *types.Array, *types.Chan:
golang.org/x/tools/go/types/typeutil
map.go#L301: case *types.Chan:
map.go#L449: case *types.Chan:
golang.org/x/tools/internal/gcimporter
iexport.go#L1023: case *types.Chan:
golang.org/x/tools/internal/typeparams
coretype.go#L43: ch, ok := U.(*types.Chan)
coretype.go#L51: curr, ok := terms[chans].Type().Underlying().(*types.Chan)
free.go#L106: case *types.Chan:
golang.org/x/tools/internal/typesinternal
element.go#L85: case *types.Chan:
zerovalue.go#L54: case *types.Pointer, *types.Slice, *types.Chan, *types.Map, *types.Signature:
zerovalue.go#L147: case *types.Pointer, *types.Slice, *types.Chan, *types.Map, *types.Signature:
zerovalue.go#L249: case *types.Chan: